<?php
/**
 * Created by PhpStorm.
 * User: Administrator
 * Date: 2017/11/2 0002
 * Time: 14:03
 */

/**
 * 移动支付
 * @link https://doc.open.alipay.com/docs/doc.htm?spm=a219a.7629140.0.0.Csvi1a&treeId=59&articleId=103663&docType=1
 */
class MobileSecuritypayPayBuilder extends AlipayTradeBuilder
{
    /**
     * 服务器异步通知页面路径：支付宝服务器主动通知商户网站里指定的页面http路径。
     * @param $notify_url
     * @return $this
     */
    public function setNotifyUrl($notify_url)
    {
        $this->params['notify_url'] = $notify_url;
        return $this;
    }

    /**
     * 服务器异步通知页面路径：支付宝服务器主动通知商户网站里指定的页面http路径。
     * @return mixed
     */
    public function getNotifyUrl()
    {
        return $this->params['notify_url'];
    }

    /**
     * @return mixed|null 支付宝合作商户网站唯一订单号。
     */
    public function getOutTradeNo()
    {
        return isset($this->params['out_trade_no']) ? $this->params['out_trade_no'] : null;
    }

    /**
     * 支付宝合作商户网站唯一订单号。
     * @param string $out_trade_no
     * @return $this
     */
    public function setOutTradeNo($out_trade_no)
    {
        $this->params['out_trade_no'] = $out_trade_no;
        return $this;
    }

    /**
     * 商品的标题/交易标题/订单标题/订单关键字等。该参数最长为128个汉字
     * @return mixed|null
     */
    public function getSubject()
    {
        return isset($this->params['subject']) ? $this->params['subject'] : null;
    }

    /**
     * 商品的标题/交易标题/订单标题/订单关键字等。该参数最长为128个汉字
     * @param string $subject
     * @return $this
     */
    public function setSubject($subject)
    {
        $this->params['subject'] = $subject;
        return $this;
    }

    /**
     *  该笔订单的资金总额，单位为RMB-Yuan。取值范围为[0.01，100000000.00]，精确到小数点后两位。
     * @return float|null
     */
    public function getTotalFee()
    {
        return isset($this->params['total_fee']) ? $this->params['total_fee'] : null;
    }

    /**
     * 该笔订单的资金总额，单位为RMB-Yuan。取值范围为[0.01，100000000.00]，精确到小数点后两位。
     * @param float $total_fee
     * @return $this
     */
    public function setTotalFee($total_fee)
    {
        $this->params['total_fee'] = $total_fee;
        return $this;
    }

    /**
     * seller_id是以2088开头的纯16位数字。
     * @return string|null
     */
    public function getSellerId()
    {
        return isset($this->params['seller_id']) ? $this->params['seller_id'] : null;
    }

    /**
     * seller_id是以2088开头的纯16位数字。
     * @param string $seller_id
     * @return $this
     */
    public function setSellerId($seller_id)
    {
        $this->params['seller_id'] = $seller_id;
        return $this;
    }

    /**
     * 对一笔交易的具体描述信息。如果是多种商品，请将商品描述字符串累加传给body。
     * @return mixed|null
     */
    public function getBody()
    {
        return isset($this->params['body']) ? $this->params['body'] : null;
    }

    /**
     * 对一笔交易的具体描述信息。如果是多种商品，请将商品描述字符串累加传给body。
     * @param string $body
     * @return $this
     */
    public function setBody($body)
    {

        $this->params['body'] = $body;
        return $this;
    }

    /**
     * 超时时间
     * 该笔订单允许的最晚付款时间，逾期将关闭交易。
     * 取值范围：1m～15d。
     * m-分钟，h-小时，d-天，1c-当天（1c-当天的情况下，无论交易何时创建，都在0点关闭）。
     * 该参数数值不接受小数点，如1.5h，可转换为90m。该参数在请求到支付宝时开始计时。
     * @param string $it_b_pay
     * @return $this
     */
    public function setItBPay($it_b_pay)
    {
        $this->params['it_b_pay'] = $it_b_pay;
        return $this;
    }

    /**
     *  超时时间
     * 该笔订单允许的最晚付款时间，逾期将关闭交易。
     * 取值范围：1m～15d。
     * m-分钟，h-小时，d-天，1c-当天（1c-当天的情况下，无论交易何时创建，都在0点关闭）。
     * 该参数数值不接受小数点，如1.5h，可转换为90m。该参数在请求到支付宝时开始计时。
     * @return mixed|null
     */
    public function getItBPay()
    {
        return isset($this->params['it_b_pay']) ? $this->params['it_b_pay'] : null;
    }


    public  function getServiceName()
    {
        return 'mobile.securitypay.pay';
    }
}